Computer - ATARI-800XL {emulated using Altirra 4.21} Language - Turbo Basic XL 1.5 Last month, November 2024, I got interested in ATARI 8-bit Computersand got hooked, obviously. As you've probably already noticed, I am actually a Commodore C128 guy. Fighting my way through the Atari jungle, it was impossible to miss the games and the joystick. To make a long story short, it took me hours to figure out why joystick fire button isn't giving any proper feedback in Turbo BASIC XL! { PRINT PEEK(632) } Joystick address is dec 632 {or shadow address 54016}, but all you get there is movement response! Anyway, Atari is obviously having a separate address location to check the Fire-Button status. Who could imagine that! I wrote this example to test the Joystick and mysterious Fire-Button: {And now you know how to use it in BASIC, but this will also help for assembler routines} JOYSTICK TEST - ATARI JOYSTICK ON PORT 1 ---------------------------------------------------------------------------- 5 REM BY LIVED.CH - 2024 - DECEMBER 10 PRINT CHR$(125):POKE 752,1:K=764 20 POSITION 0,0 30 ? "ATARI JOYSTICK CHECK - 2024)" 40 ? " PORT 1 (NUMERIC BLOCK)" 45 ? " HIT 'BREAK' TO EXIT..." 50 POSITION 0,5 60 ? "FIRE BUTTON: YOUR DIRECTIONS:" 70 POSITION 0,7 80 FIRE=PEEK(53264):REM FIRE BUTTON0 90 REM NOTE: 0 = FIRE, 1 = NOT 100 IF FIRE=0 110 PRINT "LET IT BURN!" 120 ELSE 130 PRINT " " 140 ENDIF 150 JOY=PEEK(54016) EXOR 255:REM NAVI 160 POSITION 16,7 170 IF JOY=4 THEN ? "LEFT > 04" 180 IF JOY=8 THEN ? "RIGHT > 08" 190 IF JOY=1 THEN ? "UP > 01" 200 IF JOY=2 THEN ? "DOWN > 02" 210 IF JOY=5 THEN ? "L-CORNER UP > 05" 220 IF JOY=6 THEN ? "L-CORNER DW > 06" 230 IF JOY=9 THEN ? "R-CORNER UP > 09" 240 IF JOY=10 THEN ? "R-CORNER DW > 10" 250 IF JOY=0 THEN ? " " 260 IF PEEK(K)=255 270 GOTO 70 280 ELSE 290 POSITION 16,7 300 PRINT "INCORRECT KEY" 310 POKE K,255 320 ENDIF 330 GOTO 260 Additional Info: ATARI JOYSTICK ON PORT 1 ---------------------------------------------------------------------------- FUNCTION: ADDRESS {632, JOY 1} ADDRESS 54016, SHADOW ADDRESS JOY 1 JOY=PEEK(632) JOY=PEEK(54016) EXOR 255 Numeric block {def.} Numeric block {default} Num. KEY VALUE Num. KEY VALUE LEFT 04 11 04 04 RIGHT 06 07 06 08 UP 08 14 08 01 DOWN 02 13 02 02 LEFT-UP 07 10 07 05 LEFT-DOWN 01 09 01 06 RIGHT-UP 09 06 09 09 RIGHT-DOWN 03 05 03 10 ----------------------------------------------------------------------------------------------------------- FIRE BUTTON ADDRESS {644, JOY 1} ADDRESS 53264, SHADOW ADDRESS JOY 1 -----------------------------------------------------------------------------------------------------------